package com.example.question.bt.backtrack1;

import com.example.question.tree.tree1.TreeNode;

import java.util.ArrayList;
import java.util.List;

/**
 * @Date 2023-07-15
 * @Author Jonathan
 */
public class PathSum {
    public List<List<Integer>> allPath(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> path = new ArrayList<>();
        dfs(root, res, path);
        return res;
    }

    private void dfs(TreeNode node, List<List<Integer>> res, List<Integer> path) {
        if (node == null) {
            return;
        }
        // 递
        path.add(node.val);
        // 叶子节点的时候 加入到res里面去
        if (node.left == null && node.right == null) {
            res.add(new ArrayList<>(path));
        }
        dfs(node.left, res, path);
        dfs(node.right, res, path);
        // 回溯的过程中   将当前节点从path中删除
        path.remove(path.size() - 1);
    }
}
